맨위로가기

스트림 제어 전송 프로토콜

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

스트림 제어 전송 프로토콜(SCTP)은 IETF의 SIGTRAN 워킹 그룹에서 2000년에 정의되었으며, IP 네트워크를 통해 전화 통신 신호 전송을 위해 설계되었으나, 이후 다양한 응용 분야로 확장되었다. RFC 9260이 최신 표준이며, 메시지 기반, 멀티 스트리밍, 멀티호밍 지원, 신뢰성 있는 전송, 부분 신뢰성, 경로 선택 및 모니터링, 보안 등 다양한 특징을 갖는다. SCTP는 LTE 및 5G 이동통신망 제어 신호 송수신에 사용되며, FreeBSD, Mac OS X, Microsoft Windows, Linux 등 여러 운영체제에서 구현된다. UDP 터널링을 통해 네이티브 SCTP 지원이 없는 환경에서도 사용 가능하며, 향후 6G 통신 기술 발전과 함께 역할이 확대될 것으로 예상된다.

더 읽어볼만한 페이지

  • 전송 계층 프로토콜 - 사용자 데이터그램 프로토콜
    사용자 데이터그램 프로토콜(UDP)은 연결 설정 없이 데이터를 전송하는 비연결형 전송 프로토콜로, 메시지 전달 보장은 상위 계층에 맡기지만 속도가 중요한 애플리케이션에서 널리 사용된다.
  • 전송 계층 프로토콜 - 전송 제어 프로토콜
    전송 제어 프로토콜(TCP)은 인터넷 모델의 전송 계층에서 신뢰성 있는 통신을 제공하며 순서 보장, 오류 검출, 흐름 및 혼잡 제어 기능을 수행하는 프로토콜로, 웹 브라우징 등 다양한 인터넷 응용 프로그램에서 사용되고 TCP/IP 모델의 핵심이다.
  • 스트리밍 - 실시간 전송 프로토콜
    실시간 전송 프로토콜(RTP)은 스트리밍 미디어의 실시간 전송을 위해 설계된 프로토콜로, IP 네트워크에서 오디오/비디오 전송의 표준으로 사용되며, 멀티미디어 데이터 전송, 타임스탬프, 순서 제어, QoS 피드백 등을 제공한다.
  • 스트리밍 - 페이스북 워치
    페이스북 워치는 페이스북에서 제공하는 주문형 비디오 서비스로, 오리지널 프로그램과 라이선스 콘텐츠를 제공하며 광고 수익을 창출한다.
  • 인터넷 표준 - DNSSEC
    DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다.
  • 인터넷 표준 - IPv6
    IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
스트림 제어 전송 프로토콜

2. 역사

IETF의 시그널링 전송(SIGTRAN) 워킹 그룹은 2000년에 스트림 제어 전송 프로토콜(SCTP)을 처음 정의하였다.[1][2] SCTP는 원래 IP 네트워크를 통해 전화 통신(SS7) 시그널링을 전송하기 위해 설계되었지만, 이후 다양한 응용 분야로 확장되었다. 초기 RFC 2960은 이후 RFC 4960, RFC 9260 등으로 여러 차례 업데이트되었다. IETF 전송 영역(TSVWG) 워킹 그룹에서 SCTP를 관리한다.

2. 1. 관련 RFC 문서

RFC 번호제목비고
RFC 9260스트림 제어 전송 프로토콜최신 표준
RFC 4960스트림 제어 전송 프로토콜RFC 9260에 의해 폐지됨
RFC 3286스트림 제어 전송 프로토콜 소개
RFC 7053스트림 제어 전송 프로토콜을 위한 SACK-IMMEDIATELY 확장RFC 4960 업데이트, RFC 9260에 의해 폐지됨
RFC 6525스트림 제어 전송 프로토콜(SCTP) 스트림 재구성
RFC 6458스트림 제어 전송 프로토콜(SCTP)용 소켓 API 확장
RFC 6096스트림 제어 전송 프로토콜(SCTP) 청크 플래그 등록RFC 4960 업데이트, RFC 9260에 의해 폐지됨
RFC 5062스트림 제어 전송 프로토콜(SCTP)에 대한 보안 공격과 현재의 대응책
RFC 5061스트림 제어 전송 프로토콜(SCTP) 동적 주소 재구성
RFC 5043스트림 제어 전송 프로토콜(SCTP) 직접 데이터 배치(DDP) 적응
RFC 4895스트림 제어 전송 프로토콜(SCTP)용 인증된 청크
RFC 4820스트림 제어 전송 프로토콜(SCTP)용 패딩 청크 및 매개변수
RFC 4460스트림 제어 전송 프로토콜(SCTP) 사양 오류 및 문제점RFC 9260에 의해 폐지됨
RFC 3873스트림 제어 전송 프로토콜(SCTP) 관리 정보 베이스(MIB)
RFC 3758스트림 제어 전송 프로토콜(SCTP) 부분 신뢰성 확장
RFC 3554IPsec를 사용한 스트림 제어 전송 프로토콜(SCTP) 사용에 관하여
RFC 3436스트림 제어 전송 프로토콜을 통한 전송 계층 보안
RFC 3309스트림 제어 전송 프로토콜(SCTP) 체크섬 변경RFC 4960에 의해 폐지됨
RFC 3257스트림 제어 전송 프로토콜 적용 진술
RFC 2960스트림 제어 전송 프로토콜RFC 3309에 의해 업데이트, RFC 4960에 의해 폐지됨
RFC 8540스트림 제어 전송 프로토콜: RFC 4960의 오류 및 문제점RFC 9260에 의해 폐지됨
RFC 7829SCTP-PF: 스트림 제어 전송 프로토콜을 위한 빠른 페일오버 알고리즘
RFC 7765TCP 및 스트림 제어 전송 프로토콜(SCTP) RTO 재시작
RFC 7496부분적으로 신뢰할 수 있는 스트림 제어 전송 프로토콜 확장을 위한 추가 정책
RFC 6951종단 호스트 간 통신을 위한 스트림 제어 전송 프로토콜(SCTP) 패킷의 UDP 캡슐화



IETF의 시그널링 전송(SIGTRAN) 워킹 그룹은 2000년 10월에 해당 프로토콜(번호 132[1])을 정의했으며,[2] IETF 전송 영역(TSVWG) 워킹 그룹에서 이를 관리한다.

3. 특징


  • 메시지 기반 멀티 스트리밍: SCTP는 데이터를 메시지 단위로 전송하며, 여러 개의 독립적인 스트림을 병렬로 처리하여 효율성을 높인다. 예를 들어, 웹 페이지 이미지와 텍스트를 동시에 전송할 수 있다. 이는 여러 개의 연결을 단일 SCTP 연관으로 묶어 메시지(또는 청크) 단위로 처리하기 때문이다.
  • 멀티호밍 지원: 연결의 한쪽 또는 양쪽 종단이 여러 개의 IP 주소를 가질 수 있어, 네트워크 장애 시에도 연결을 유지하고 안정성을 확보한다. 이는 특히 이동 통신 환경에서 중요한 기능이다.[8] 각 SCTP 종단점은 하트비트를 사용하여 원격 종단점의 주소 도달 가능성을 확인하고, 수신된 하트비트를 승인해야 한다.
  • 신뢰성 있는 전송: 데이터 손실이나 순서 오류 없이 안정적인 전송을 보장한다. TCP와 달리 SCTP는 스트림 내에서 메시지 순서를 선택적으로 유지할 수 있다.
  • 부분 신뢰성: 필요에 따라 일부 데이터의 손실을 허용하면서도 전체적인 통신 품질을 유지할 수 있다.
  • 경로 선택 및 모니터링: 데이터 전송 경로를 선택하고 연결 상태를 지속적으로 감시하여 최적의 통신 경로를 유지한다. SCTP가 원격 주소로 메시지를 전송할 때 소스 인터페이스는 호스트의 라우팅 테이블에 의해서만 결정된다.
  • 보안: SYN 플러드 공격과 같은 서비스 거부 공격에 대한 방어 메커니즘을 제공하며, 데이터 무결성을 보장한다.[6]
  • 점보 프레임에 적합한 향상된 오류 감지 기능을 제공한다.


SCTP 멀티호밍


비대칭 멀티호밍: 로컬 멀티호밍에서 원격 싱글 호밍으로


비대칭 멀티호밍: 로컬 싱글 호밍에서 원격 멀티호밍으로


SCTP는 중복 경로를 제공하여 신뢰성을 높인다. 비대칭 멀티호밍에서 두 종단점 중 하나는 멀티호밍을 지원하지 않을 수 있다. 로컬 멀티호밍 및 원격 싱글 호밍에서 원격 기본 주소에 도달할 수 없는 경우, 대체 경로가 있더라도 SCTP 연결이 실패한다.

SCTP 설계자는 원래 IP를 통한 전화 통신(예: SS7) 전송을 의도했으며, IP에서 SS7 시그널링 네트워크의 신뢰성 속성을 복제하는 것을 목표로 했다. 이 IETF 노력은 SIGTRAN으로 알려져 있다. 그 동안 Diameter 프로토콜 및 RSerPool과 같은 다른 용도가 제안되었다.

TCP는 인터넷을 통해 데이터를 안정적으로 전송하는 주요 수단을 제공해 왔지만, 다음과 같은 제한 사항이 있었다.

  • TCP는 안정적인 데이터 전송과 엄격한 전송 순서대로의 데이터 전달을 모두 제공하여 일부 애플리케이션에서 불필요한 지연을 유발한다.
  • TCP의 스트림 지향적 특성으로 인해 개별 레코드를 구분하기 위해 명시적인 마커 또는 기타 인코딩을 추가해야 한다.
  • TCP 구현은 작은 IP 패킷을 피하기 위해 데이터 전송을 지연할 수 있다 (네글 알고리즘).
  • TCP 소켓의 제한된 범위는 멀티홈 호스트를 사용한 고가용성 데이터 전송을 복잡하게 만든다.
  • TCP는 SYN 공격과 같은 서비스 거부 공격에 상대적으로 취약하다.


SCTP의 채택은 인지 부족, 구현 부족(특히 Microsoft Windows에서), 애플리케이션 지원 부족 및 네트워크 지원 부족으로 인해 늦어졌다.[7]

4. 패킷 구조

SCTP 패킷은 두 가지 기본 섹션으로 구성된다.

# 처음 12바이트를 차지하는 '''공통 헤더'''(파란색으로 강조 표시).

# 패킷의 나머지 부분을 차지하는 '''데이터 청크'''. 첫 번째 청크는 녹색으로 강조 표시되고, ''N''개의 청크 중 마지막 청크(청크 N)는 빨간색으로 강조 표시된다.

비트0–78–1516–2324–31
+0출발지 포트목적지 포트
32확인 태그
64체크섬
96청크 1 타입청크 1 플래그청크 1 길이
128청크 1 데이터
청크 N 타입청크 N 플래그청크 N 길이
청크 N 데이터



각 청크는 1바이트 타입 식별자로 시작하며, RFC 9260에서 15개의 청크 타입이 정의되어 있고, 추가 RFC에서 최소 5개가 더 정의되어 있다.[9] 각 청크는 8개의 플래그 비트, 2바이트 길이 필드 및 데이터로 구성된다. 청크가 4바이트의 배수를 형성하지 않으면 0으로 채워지며, 이는 청크 길이에 포함되지 않는다. 2바이트 길이 필드는 각 청크를 최대 65,535바이트(타입, 플래그 및 길이 필드 포함)로 제한한다.

5. 보안

SCTP는 원래 설계에 암호화가 포함되지 않았지만, SYN 플러드 공격을 방지하기 위한 4단계 핸드셰이크(TCP 3단계 핸드셰이크에 비해) 및 연결 검증 및 진위 확인을 위한 대형 "쿠키"와 같은 보안 개선 기능을 염두에 두고 설계되었다.[1]

신뢰성은 SCTP 보안 설계의 핵심 요소이기도 하다.[1] 멀티호밍은 일부 경로와 인터페이스가 다운되어도 연결이 열린 상태를 유지할 수 있게 해준다.[1] 이는 SIGTRAN이 SCTP를 사용하여 IP 네트워크를 통해 SS7을 전송하고 네트워크 이상을 견디는 동안에도 통신 서비스를 유지하기 위해 링크 중단 시 강력한 복원력을 필요로 하므로 특히 중요하다.[1]

SCTP는 때때로 훌륭한 지문 인식 후보가 된다.[1] 일부 운영 체제는 SCTP 지원을 활성화하여 제공하며, TCP 또는 UDP만큼 널리 알려져 있지 않기 때문에 방화벽 및 침입 탐지 구성에서 간과되는 경우가 있어 프로빙 트래픽을 허용하는 경우가 많다.[1]

6. 구현

다음은 SCTP를 구현하는 운영 체제 목록이다.

운영 체제비고
AIX버전 5 이상
NetBSD8.0 이상[12]
시스코 IOS12 이상
DragonFly BSD버전 1.4부터 지원, 버전 4.2에서 지원 중단[13]
FreeBSD버전 7 이상, 참조 SCTP 구현 포함[14]
HP-UX11i v2 이상[15]
illumos
리눅스커널 2.4 이상
QNX Neutrino 실시간 OS6.3.0부터 6.3.2까지, 6.4.0부터는 더 이상 사용되지 않음[17]
Tru64Compaq SCTP 애드온 패키지 사용
Sun Solaris10 이상[18]
VxWorks버전 6.2.x ~ 6.4.x 및 6.7 이상



타사 드라이버는 다음과 같다.


  • Microsoft Windows: SctpDrv 커널 드라이버는 BSD SCTP 스택을 Windows로 포팅한 것이나, 2012년 이후 중단되었다.[19]
  • MacOS: Mac OS X용 SCTP 네트워크 커널 확장[20]


사용자 공간 라이브러리는 다음과 같다.

  • 이식 가능한 SCTP 사용자 공간 스택[21]
  • SCTP 라이브러리[22]
  • * Windows XP 포트[23]
  • Oracle Java SE 7
  • Erlang/OTP


다음은 SCTP를 구현하는 애플리케이션이다.

7. UDP 터널링

운영 체제에서 네이티브 SCTP 지원이 없는 경우, UDP를 통해 SCTP를 터널링하는 것이 가능하며,[24] 기존 애플리케이션이 수정 없이 SCTP를 사용할 수 있도록 TCP API 호출을 SCTP 호출에 매핑할 수도 있다.[25]

참조

[1] 웹사이트 Protocol Numbers https://www.iana.org[...] IANA 2014-09-09
[2] 간행물 Stream Control Transmission Protocol IETF 2000-10
[3] 문서 The [[SCTP packet structure#DATA chunk|DATA chunk]] uses a sequence number for ordered messages, the [[SCTP packet structure#I-DATA chunk|I-DATA chunk]], which solves some problems with the original DATA chunk, uses a message-id for all messages
[4] 간행물 Diameter Base Protocol IETF 2012-05-18
[5] 간행물 An Overview of Reliable Server Pooling Protocols IETF
[6] 문서 RFC 9260, section 1.5.5 https://tools.ietf.o[...]
[7] 뉴스 What About Stream Control Transmission Protocol (SCTP)? http://www.networkwo[...] 2017-10-04
[8] 서적 EPC and 4G packet networks: driving the mobile broadband revolution Elsevier/AP, Academic Press is an imprint of Elsevier 2013
[9] 문서 See [[SCTP packet structure]] for more details.
[10] 웹사이트 Reference Implementation for SCTP - RFC4960 https://github.com/s[...] 2013-10-14
[11] 웹사이트 sys/netinet/sctp.h http://bxr.su/n/sys/[...] NetBSD 2019-01-21
[12] 웹사이트 man4/sctp.4 http://bxr.su/n/shar[...] NetBSD 2019-01-21
[13] 웹사이트 DragonFly Removes SCTP http://lists.dragonf[...] 2016-04-28
[14] 웹사이트 About FreeBSD's Technological Advances http://www.freebsd.o[...] The FreeBSD Project 2008-09-13
[15] 웹사이트 Stream Control Transmission Protocol (SCTP) http://h20293.www2.h[...] Hewlett-Packard Development Company
[16] 웹사이트 TCP/IP Networking http://www.qnx.com/d[...] QNX Software Systems 2008-09-13
[17] 웹사이트 QNX Software Development Platform 6.4.0 http://www.qnx.com/d[...]
[18] 웹사이트 Solaris 10 Operating System Networking — Extreme Network Performance http://www.sun.com/s[...] Sun Microsystems 2008-09-13
[19] 웹사이트 SctpDrv: an SCTP driver for Microsoft Windows http://www.bluestop.[...] 2022-01-04
[20] 웹사이트 SCTP Network Kernel Extension for Mac OS X https://github.com/s[...] 2021-09-23
[21] 웹사이트 sctplab/usrsctp https://github.com/s[...] 2021-09-21
[22] 웹사이트 SCTP Download Page http://www.sctp.de/s[...] 2011-02-04
[23] 웹사이트 Windows SCTP library installer http://www.sctp.be/s[...] 2011-02-04
[24] 간행물 UDP Encapsulation of Stream Control Transmission Protocol (SCTP) Packets for End-Host to End-Host Communication IETF 2013-05
[25] 웹사이트 Transparent TCP-to-SCTP Translation Shim Layer http://www.cis.udel.[...] 2008-09-13
[26] 간행물 Happy Eyeballs: Success with Dual-Stack Hosts https://tools.ietf.o[...] IETF 2012-04
[27] 웹사이트 Happy Eyeballs for Transport Selection https://tools.ietf.o[...] IETF 2017-01-09
[28] 문서 https://www.nttdocomo.co.jp/binary/pdf/corporate/technology/rd/technical_journal/bn/vol19_1/vol19_1_011jp.pdf https://www.nttdocom[...]
[29] 웹인용 Protocol Numbers //www.iana.org/assig[...] IANA 2014-09-09
[30] 문서 SCTP 표준 1.2절 https://tools.ietf.o[...]
[31] 간행물 Stream Control Transmission Protocol 국제 인터넷 표준화 기구 2000-10
[32] 간행물 UDP Encapsulation of Stream Control Transmission Protocol (SCTP) Packets for End-Host to End-Host Communication 국제 인터넷 표준화 기구 2013-05
[33] 웹인용 Transparent TCP-to-SCTP Translation Shim Layer http://www.cis.udel.[...] 2008-09-13



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com